/* * Copyright (c) 2003, PostgreSQL Global Development Group * See the LICENSE file in the project root for more information. */ package org.postgresql.test.osgi; import org.postgresql.jdbc2.optional.ConnectionPool; import org.postgresql.jdbc2.optional.PoolingDataSource; import org.postgresql.jdbc2.optional.SimpleDataSource; import org.postgresql.osgi.PGDataSourceFactory; import org.postgresql.xa.PGXADataSource; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.osgi.service.jdbc.DataSourceFactory; import java.sql.Driver; import java.util.Properties; import javax.sql.ConnectionPoolDataSource; import javax.sql.DataSource; import javax.sql.XADataSource; public class PGDataSourceFactoryTest { private DataSourceFactory _dataSourceFactory; @Before public void createFactory() { _dataSourceFactory = new PGDataSourceFactory(); } @Test public void testCreateDriverDefault() throws Exception { Driver driver = _dataSourceFactory.createDriver(null); Assert.assertTrue(driver instanceof org.postgresql.Driver); } @Test public void testCreateDataSourceDefault() throws Exception { DataSource dataSource = _dataSourceFactory.createDataSource(null); Assert.assertNotNull(dataSource); } @Test public void testCreateDataSourceSimple() throws Exception { Properties properties = new Properties(); properties.put(DataSourceFactory.JDBC_DATABASE_NAME, "db"); properties.put("currentSchema", "schema"); DataSource dataSource = _dataSourceFactory.createDataSource(properties); Assert.assertNotNull(dataSource); Assert.assertTrue(dataSource instanceof SimpleDataSource); SimpleDataSource simpleDataSource = (SimpleDataSource) dataSource; Assert.assertEquals("db", simpleDataSource.getDatabaseName()); Assert.assertEquals("schema", simpleDataSource.getCurrentSchema()); } @Test public void testCreateDataSourcePooling() throws Exception { Properties properties = new Properties(); properties.put(DataSourceFactory.JDBC_DATABASE_NAME, "db"); properties.put(DataSourceFactory.JDBC_INITIAL_POOL_SIZE, "5"); properties.put(DataSourceFactory.JDBC_MAX_POOL_SIZE, "10"); DataSource dataSource = _dataSourceFactory.createDataSource(properties); Assert.assertNotNull(dataSource); Assert.assertTrue(dataSource instanceof PoolingDataSource); PoolingDataSource poolingDataSource = (PoolingDataSource) dataSource; Assert.assertEquals("db", poolingDataSource.getDatabaseName()); Assert.assertEquals(5, poolingDataSource.getInitialConnections()); Assert.assertEquals(10, poolingDataSource.getMaxConnections()); } @Test public void testCreateConnectionPoolDataSourceDefault() throws Exception { ConnectionPoolDataSource dataSource = _dataSourceFactory.createConnectionPoolDataSource(null); Assert.assertNotNull(dataSource); } @Test public void testCreateConnectionPoolDataSourceConfigured() throws Exception { Properties properties = new Properties(); properties.put(DataSourceFactory.JDBC_DATABASE_NAME, "db"); ConnectionPoolDataSource dataSource = _dataSourceFactory.createConnectionPoolDataSource(properties); Assert.assertNotNull(dataSource); Assert.assertTrue(dataSource instanceof ConnectionPool); ConnectionPool connectionPoolDataSource = (ConnectionPool) dataSource; Assert.assertEquals("db", connectionPoolDataSource.getDatabaseName()); } @Test public void testCreateXADataSourceDefault() throws Exception { XADataSource dataSource = _dataSourceFactory.createXADataSource(null); Assert.assertNotNull(dataSource); } @Test public void testCreateXADataSourceConfigured() throws Exception { Properties properties = new Properties(); properties.put(DataSourceFactory.JDBC_DATABASE_NAME, "db"); XADataSource dataSource = _dataSourceFactory.createXADataSource(properties); Assert.assertNotNull(dataSource); Assert.assertTrue(dataSource instanceof PGXADataSource); PGXADataSource xaDataSource = (PGXADataSource) dataSource; Assert.assertEquals("db", xaDataSource.getDatabaseName()); } }